<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
    /*
     *创建一个字符串
     */
    var str="HelloWorlld"
    /*
     *在底层字符串是以字符数组的形式保存的
     *["H","e","l","l","o"…………]
     */
    
     //length可以用来获取字符串的长度
    console.log(str.length);//输出字符长度12
    console.log(str[0]);//输出第一个字符H

    //返回字符串中指定位置的字符
    //charAT()，返回指定索引位置的值
    //该方法不会对原字符串产生影响
    var result =str.charAt(2);
    var result2=str[2];
    console.log(result);//会返回指定的索引位置的值
    console.log(result2);//效果跟上面的charAT(2)一样

    //charCodeAt()
    //返回字符串中指定的索引位置的值的Unicode编码值
    var result3=str.charCodeAt(2);
    console.log(result3);//输出了l在Unicode编码中的值，也就是108 

    //String.fromCharCode()
    //返回字符编码中指定的值的字符编码
    var result4=String.fromCharCode(78);//注意()中的值的进制
    console.log(result4);

    //concat()
    //可以用来连接两个或者多个字符串
    //作用和+一样
    //不会对原字符串产生影响
    var result5,str1,str2;
    str1="Hello";
    str2="World";
    result5=str1.concat(str2);
    console.log(result5);

    //indexOf()
    //检索字符串,该方法可以检查一个字符串中是否含有指定内容
    //如果字符串中含有该内容，则会返回其第一次出现的索引
    //如果没有找到指定的内容，则是返回-1
    //()中可以传递两个参数，第一个为索引值，第二个为索引位置的值
    var str3="hello atguigu";
    var result6=str3.indexOf("g");
    var result7=str3.indexOf("g",9);
    console.log(result7);
    console.log(result6);

    //lastIndexOf()
    //相比于indexOf()不同的是一个是从前往后找，一个是从后往前找，但是找到的结果的位置索引还是按从前往后算
    //第二个参数也是起始位置索引，从输入的起始索引开始从后往前找
    //方向改变，索引位置还是不变

    //slice()
    //可以从字符串中截取指定的内容
    //对原字符串没有任何影响
    //同样是可以输入两个参数，一个是起始位置索引，一个是结束位置索引，但是截取的字符串包括起始位置不包括结束位置
    var str4="abcdefghijk";
    var result8=str4.slice(0,5);
    var result9=str4.slice(0);
    var result10=str4.slice(0,-1);//负数表示倒数，所以-1表示倒数第一，不输出结束位置索引
    console.log(result8);//输出abcde（不包括f）
    console.log(result9);//只有起始位置索引，没有结束位置，默认输出后面的所有字符串
    console.log(result10);//输出abcdefghij

    //substring()
    //可以用来截取一个字符串，可以slice()类似
    //两个参数的使用跟slice()类似，都是起始位置索引和结束位置索引 
    //这个方法不能接受负值作为参数，如果传递了一个负值，折磨人使用0
    //他还自动调整参数的位置，如果第二个参数小于第一个，则自动交换
    var result11=str4.substring(1,2);
    console.log(result11);

    //substr()
    //用来截取字符串
    //同样是可以传递两个参数，第一个参数是起始位置索引值，第二个参数是索引的数量(索引的长度)
    //不影响原字符串
    var result12=str4.substr(1,2);
    console.log(result12);

    //split()
    //可以将一个字符串拆分为一个数组
    var str5="abc,bcd,efg,hij";
    var result13=str5.split(",");
    //如果传递一个空串作为参数，则会将每个字符都拆分为数组中的每一个元素
    console.log(result13);//这样的话，就会以,为标识符把字符串分开
    //最后就会输出一个数组
    console.log(result13[1]);//控制台输出数组的第二个元素，即bcd
    console.log(typeof result13);//此时输出的object而不是string
    console.log(Array.isArray(result13));//控制台输出的是true，确认result13是数组
    console.log(result13.length);//控制台输出的长度是4，也就是四个元素

    //toUpperCase()
    //将一个字符串转换为大写并且返回
    var str6="abcdefg一二";
    var result14=str6.toUpperCase();
    console.log(result14);//小写字母变成了大写字母

    //tuLowerCase()
    //将一个字符串转换为小写并且返回
    var str7="ABCDEFG";
    var result15=str7.toLowerCase();
    console.log(result15);//大写字母变成了小写字母

    </script>
</head>
<body>
    
</body>
</html>